package com.Web_02;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "ResponseDemo3", value = "/ResponseDemo3")


//    与ResponseDemo2一起合用
public class ResponseDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.write("ResponseDemo3....执行了");
        System.out.println("ResponseDemo3....执行了");//在恐慌之态输出
    }

    /*
    forward和redirect的区别
    重定向(redirect)
    1.地址栏发生变化：即在ResponseDemo2运行会变成ResponseDemo3
    相当于输入了两个网址，即两次请求
    2.重定向可以访问其他站点（服务器）的资源（跨域访问），可以访问外部服务器
    3.重定向是两次request请求，不能使用request对象来共享资源
    request只能在一次请求内共享数据
    4.最终响应给浏览器的有最后一个Servlet决定相应的内容
    5.URL的重定向不能访问WEB-INF目录的浏览器

    转发(forward)
    1.转发地址栏路径不变
    2.转发只能访问当前服务器下的资源
    3.转发是一次请求，可以使用request对象来共享资源


    forward和redirect使用场景
    1.分析各自的特点(是否共享资源、是否访问外部服务器、)
    2、必须使用forward: 如果需要共享同一次请求的数据/  要访问WEB-INF目录下的资源
    3.跨区域方位必须使用redirect
    4.能使用请求转发就是用请求转发
     */



}
